home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_100 / 132_01 / shootini.c < prev    next >
Text File  |  1985-08-19  |  3KB  |  142 lines

  1. /*
  2.     init() initializes the lists
  3. */
  4. init()
  5. {
  6. int *mlist,*pg0list,*pg1list; /* pointers to master list and page list */
  7. int    counter,*ahead,*objptr,*proc,*prcexp;
  8. int    x,y,flag,class;
  9.  
  10.     counter = 0;
  11.     mlist = master;
  12.     pg0list = lpage0;
  13.     pg1list = lpage1;
  14.     while(counter < NOBJ) {
  15.         proc = NULL;
  16.         class = NULL;
  17.         prcexp = NULL;
  18.         if(counter != (NOBJ - 1)) 
  19.             ahead = mlist + MASLEN;
  20.         else    ahead = NULL;
  21.         if(counter == PLANE) {
  22.             objptr = plane;
  23.             x = PLNX0;
  24.             y = PLNY0;
  25.             flag = NULL;
  26.             proc = pplane;
  27.             class = TARGET;
  28.         }
  29.         else if(counter == GUN) {
  30.             objptr = gun;
  31.             x = CENTER;
  32.             y = 182;
  33.             flag = NULL;
  34.             proc = pgun;
  35.              }
  36.         else if(counter == BULLET) {
  37.             objptr = bullet;
  38.             x = 190;
  39.             y= 190;
  40.             flag = NULL;
  41.             proc = pbullet ;
  42.             }
  43.         else if(counter == BOOM) {
  44.             x = 10;
  45.             y = 10;
  46.             flag = BLANKED;
  47.             objptr = boom;
  48.              }
  49.         else if(counter == OBJ1) {
  50.             x = 10;
  51.             y = 10;
  52.             flag = NULL;
  53.             objptr = obj1;
  54.             proc = pchase;
  55.             class = TARGET;
  56.         }
  57.         else if(counter == OBJ2) {
  58.             x = 10;
  59.             y = 180;
  60.             flag = NULL;
  61.             objptr = obj2;
  62.             proc = pchase;
  63.             class = TARGET;
  64.         }
  65.         else if(counter == (NOBJ -1) ) {
  66.             x = 0;
  67.             y = 0;
  68.             flag = NULL;
  69.             proc = pchase;
  70.             objptr = obj1;
  71.             }
  72.         flag = flag | UPALL ; /* force update of all pages */
  73.         setmlist(mlist,ahead,counter,x,y,flag,objptr,proc,prcexp,class);
  74.         if(counter != (NOBJ - 1)) {
  75.             copylist(mlist,pg0list,(pg0list+PGLEN));
  76.             copylist(mlist,pg1list,(pg1list+PGLEN));
  77.         }
  78.         else {
  79.             copylist(mlist,pg0list,NULL);
  80.             copylist(mlist,pg1list,NULL);
  81.         }
  82.         pg0list[FLAGS] = pg0list[FLAGS] | BLANKED ;
  83.         pg1list[FLAGS] = pg1list[FLAGS] | BLANKED ;
  84.         mlist = mlist + MASLEN;
  85.         pg1list = pg1list + PGLEN;
  86.         pg0list = pg0list + PGLEN;
  87.         counter++;
  88.     }
  89.     setmem(PAGE0,PGSIZE,NULL);
  90.     setmem(PAGE1,PGSIZE,NULL); /* clear both pages */
  91.     putclk();    /* enable screen clock sync */
  92.     spmod4();    /* set pmode 4 graphics */
  93. }
  94. /*
  95.     setmlist    sets up the master display list where
  96.     setmlist(listpointer,FORWARD,NUMBER,X,Y,FLAGS,OBJPTR,PROC,PROCEXP,CLASS) is
  97.      the expected argument list.
  98.     Calls - No one
  99.     Returns - nothing
  100. */
  101. setmlist(plist,for,num,x,y,flags,pobj,proc,prcexp,class)
  102. int    *plist,for,num,x,y,flags,*pobj,*proc,*prcexp,class;
  103. {
  104.     plist[FORWARD]=for;
  105.     plist[NUMBER] = num;
  106.     plist[X]      = x;
  107.     plist[Y]      = y;
  108.     plist[FLAGS]  = flags;
  109.     plist[OBJPTR] = pobj;
  110.     plist[XINCR]    = NULL;
  111.     plist[YINCR]    = NULL;
  112.     plist[PROC]    = proc;
  113.     plist[PROCEXP]  = prcexp;
  114.     plist[CLASS]    = class;
  115. }
  116. /*
  117.     copylist    initializes a page list from a master list
  118.     argument list : (Masterlist pointer,Pagelist pointer,FORWARD)
  119. */
  120. copylist(mlist,pglist,for)
  121. int    *mlist,*pglist,for;
  122. {
  123.     pglist[FORWARD]    = for;
  124.     pglist[NUMBER]    = mlist[NUMBER];
  125.     pglist[X]    = mlist[X];
  126.     pglist[Y]    = mlist[Y];
  127.     pglist[FLAGS]    = mlist[FLAGS];
  128.     pglist[OBJPTR]    = mlist[OBJPTR];
  129. }
  130. setmem(start,size,value)
  131. char    *start;
  132. int    size;
  133. char    value;
  134. {
  135.     while(size --) {
  136.         *start++ = value;
  137.     }
  138. }
  139. ;
  140. }
  141. posx(objnum)
  142. in